library(tidyverse)
library(sf)
library(maps)
library(plotly)
italy <- map_data("italy")

catania <- italy %>% 
  filter(region == "Catania")

catania_crime <- read_csv("Sicily2026_Catania_IncomeCrime_ONE.csv")
# Plot the base map
italy_map <- ggplot() +
  geom_polygon(data = italy, aes(x = long, y = lat, group = group), fill = "white", color = "lightgrey") + 
    geom_polygon(data = italy, aes(x = long, y = lat, group = region), fill = NA, color = NA) + 

  geom_polygon(data = catania, aes(x = long, y = lat, group = region), fill = "red", color = "red") +
  #geom_point(data = catania_crime, aes(x = Longitude, y = Latitude, group = CrimeTier, color = CrimeTier)) +
  coord_map() +
  theme_void()# +
 # labs(title = "Italy Base Map")

ggplotly(italy_map)
catania_crime <- catania_crime %>% 
  filter(IncomeTier != "Baseline") %>% 
  mutate(visitability = factor(StyleKey, levels = c(
                                                    "Income=Higher | Crime=Lower", 
                                                    "Income=Mid | Crime=Lower",
                                                    "Income=Mid | Crime=Mid",
                                                    "Income=Lower | Crime=Mid",
                                                    "Income=Lower | Crime=Higher"),
                              labels = c(1,2,3,4,5)
                                                   ),
visitability = factor(visitability, labels = c(
                                                    "Income=Higher | Crime=Lower", 
                                                    "Income=Mid | Crime=Lower",
                                                    "Income=Mid | Crime=Mid",
                                                    "Income=Lower | Crime=Mid",
                                                    "Income=Lower | Crime=Higher"),
                              levels = c(1,2,3,4,5)
                                                   )
)
# Plot Catania are only
catania_map <- ggplot() +
  
  geom_polygon(data = catania, aes(x = long, y = lat, group = group), fill = "white", color = "lightgrey") +
  #geom_point(data = catania_crime, aes(x = Longitude, y = Latitude, group = CrimeTier, color = CrimeTier)) +
  #geom_point(data = catania_crime, aes(x = Longitude, y = Latitude, group = IncomeTier, color = IncomeTier)) +
  geom_point(data = catania_crime, aes(x = Longitude, y = Latitude, group = Name, color = visitability)) +
  coord_map() +
  theme_void() +
 labs(title = "Catania Region") +
 scale_color_manual(values = colorRampPalette(c("darkgreen", "red"))(5)) 
ggplotly(catania_map)
ai_shape <- st_read("C:/Users/ndyet/Git/Misc/Italy_maps/Catania_Quartieri_IncomeCrime_POLY/Catania_Quartieri_IncomeCrime_POLY.shp")
Reading layer `Catania_Quartieri_IncomeCrime_POLY' from data source 
  `C:\Users\ndyet\Git\Misc\Italy_maps\Catania_Quartieri_IncomeCrime_POLY\Catania_Quartieri_IncomeCrime_POLY.shp' using driver `ESRI Shapefile'
Simple feature collection with 35 features and 7 fields
Geometry type: POLYGON
Dimension:     XY
Bounding box:  xmin: 15.0305 ymin: 37.4485 xmax: 15.1225 ymax: 37.5595
Geodetic CRS:  WGS 84
ai_map <- ggplot() +
  geom_polygon(data = catania, aes(x = long, y = lat, group = group), fill = "white", color = "lightgrey") +
  geom_sf(data = ai_shape, aes(fill = crime_tier, group = municipio), color = "grey") + # Counties
 # geom_sf(data = sf_zip_reduce_pol, fill = 'lightblue', color = 'lightblue') +#Surveyed zip codes
 # geom_sf(data = states_pol, fill = NA, color = "black", linewidth = 1) + # State Lines
#  labs(title = "2022 RBSA Encachment Area", 
 #      caption = "Source: 2020 US Census & 2022 RBSA survey") +
  theme_void() 
ggplotly(ai_map)
ai_shape2 <- st_read("C:/Users/ndyet/Git/Misc/Italy_maps/Sicily2026_POLYGONS/Sicily2026_POLYGONS.shp")
Reading layer `Sicily2026_POLYGONS' from data source `C:\Users\ndyet\Git\Misc\Italy_maps\Sicily2026_POLYGONS\Sicily2026_POLYGONS.shp' using driver `ESRI Shapefile'
Simple feature collection with 44 features and 7 fields
Geometry type: POLYGON
Dimension:     XY
Bounding box:  xmin: 15.0305 ymin: 37.408 xmax: 15.2945 ymax: 37.8565
Geodetic CRS:  WGS 84
ai_map2 <- ggplot() +
  geom_polygon(data = catania, aes(x = long, y = lat, group = group), fill = "white", color = "lightgrey") +
 # geom_sf(data = ai_shape2, aes(fill = crime_idx, group = municipio), color = "grey") + # Counties
  geom_sf(data = ai_shape2, aes(fill = as.factor(night_idx), group = crime_idx), color = "grey") + # Counties

 # geom_sf(data = sf_zip_reduce_pol, fill = 'lightblue', color = 'lightblue') +#Surveyed zip codes
 # geom_sf(data = states_pol, fill = NA, color = "black", linewidth = 1) + # State Lines
#  labs(title = "2022 RBSA Encachment Area", 
 #      caption = "Source: 2020 US Census & 2022 RBSA survey") +
  theme_void() 
ggplotly(ai_map2)
LS0tDQp0aXRsZTogIlIgTm90ZWJvb2siDQpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sNCi0tLQ0KDQpgYGB7ciwgbWVzc2FnZSA9IEZBTFNFLCB3YXJuaW5nID0gRkFMU0V9DQpsaWJyYXJ5KHRpZHl2ZXJzZSkNCmxpYnJhcnkoc2YpDQpsaWJyYXJ5KG1hcHMpDQpsaWJyYXJ5KHBsb3RseSkNCmBgYA0KDQoNCmBgYHtyLCBtZXNzYWdlID0gRkFMU0UsIHdhcm5pbmcgPSBGQUxTRX0NCml0YWx5IDwtIG1hcF9kYXRhKCJpdGFseSIpDQoNCmNhdGFuaWEgPC0gaXRhbHkgJT4lIA0KICBmaWx0ZXIocmVnaW9uID09ICJDYXRhbmlhIikNCg0KY2F0YW5pYV9jcmltZSA8LSByZWFkX2NzdigiU2ljaWx5MjAyNl9DYXRhbmlhX0luY29tZUNyaW1lX09ORS5jc3YiKQ0KYGBgDQoNCmBgYHtyfQ0KIyBQbG90IHRoZSBiYXNlIG1hcA0KaXRhbHlfbWFwIDwtIGdncGxvdCgpICsNCiAgZ2VvbV9wb2x5Z29uKGRhdGEgPSBpdGFseSwgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwKSwgZmlsbCA9ICJ3aGl0ZSIsIGNvbG9yID0gImxpZ2h0Z3JleSIpICsgDQogICAgZ2VvbV9wb2x5Z29uKGRhdGEgPSBpdGFseSwgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IHJlZ2lvbiksIGZpbGwgPSBOQSwgY29sb3IgPSBOQSkgKyANCg0KICBnZW9tX3BvbHlnb24oZGF0YSA9IGNhdGFuaWEsIGFlcyh4ID0gbG9uZywgeSA9IGxhdCwgZ3JvdXAgPSByZWdpb24pLCBmaWxsID0gInJlZCIsIGNvbG9yID0gInJlZCIpICsNCiAgI2dlb21fcG9pbnQoZGF0YSA9IGNhdGFuaWFfY3JpbWUsIGFlcyh4ID0gTG9uZ2l0dWRlLCB5ID0gTGF0aXR1ZGUsIGdyb3VwID0gQ3JpbWVUaWVyLCBjb2xvciA9IENyaW1lVGllcikpICsNCiAgY29vcmRfbWFwKCkgKw0KICB0aGVtZV92b2lkKCkjICsNCiAjIGxhYnModGl0bGUgPSAiSXRhbHkgQmFzZSBNYXAiKQ0KDQpnZ3Bsb3RseShpdGFseV9tYXApDQpgYGANCg0KYGBge3J9DQpjYXRhbmlhX2NyaW1lIDwtIGNhdGFuaWFfY3JpbWUgJT4lIA0KICBmaWx0ZXIoSW5jb21lVGllciAhPSAiQmFzZWxpbmUiKSAlPiUgDQogIG11dGF0ZSh2aXNpdGFiaWxpdHkgPSBmYWN0b3IoU3R5bGVLZXksIGxldmVscyA9IGMoDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluY29tZT1IaWdoZXIgfCBDcmltZT1Mb3dlciIsIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNvbWU9TWlkIHwgQ3JpbWU9TG93ZXIiLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNvbWU9TWlkIHwgQ3JpbWU9TWlkIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5jb21lPUxvd2VyIHwgQ3JpbWU9TWlkIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5jb21lPUxvd2VyIHwgQ3JpbWU9SGlnaGVyIiksDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbHMgPSBjKDEsMiwzLDQsNSkNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICksDQp2aXNpdGFiaWxpdHkgPSBmYWN0b3IodmlzaXRhYmlsaXR5LCBsYWJlbHMgPSBjKA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJJbmNvbWU9SGlnaGVyIHwgQ3JpbWU9TG93ZXIiLCANCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5jb21lPU1pZCB8IENyaW1lPUxvd2VyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiSW5jb21lPU1pZCB8IENyaW1lPU1pZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluY29tZT1Mb3dlciB8IENyaW1lPU1pZCIsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkluY29tZT1Mb3dlciB8IENyaW1lPUhpZ2hlciIpLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWxzID0gYygxLDIsMyw0LDUpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICApDQopDQpgYGANCg0KDQoNCmBgYHtyfQ0KIyBQbG90IENhdGFuaWEgYXJlIG9ubHkNCmNhdGFuaWFfbWFwIDwtIGdncGxvdCgpICsNCiAgDQogIGdlb21fcG9seWdvbihkYXRhID0gY2F0YW5pYSwgYWVzKHggPSBsb25nLCB5ID0gbGF0LCBncm91cCA9IGdyb3VwKSwgZmlsbCA9ICJ3aGl0ZSIsIGNvbG9yID0gImxpZ2h0Z3JleSIpICsNCiAgI2dlb21fcG9pbnQoZGF0YSA9IGNhdGFuaWFfY3JpbWUsIGFlcyh4ID0gTG9uZ2l0dWRlLCB5ID0gTGF0aXR1ZGUsIGdyb3VwID0gQ3JpbWVUaWVyLCBjb2xvciA9IENyaW1lVGllcikpICsNCiAgI2dlb21fcG9pbnQoZGF0YSA9IGNhdGFuaWFfY3JpbWUsIGFlcyh4ID0gTG9uZ2l0dWRlLCB5ID0gTGF0aXR1ZGUsIGdyb3VwID0gSW5jb21lVGllciwgY29sb3IgPSBJbmNvbWVUaWVyKSkgKw0KICBnZW9tX3BvaW50KGRhdGEgPSBjYXRhbmlhX2NyaW1lLCBhZXMoeCA9IExvbmdpdHVkZSwgeSA9IExhdGl0dWRlLCBncm91cCA9IE5hbWUsIGNvbG9yID0gdmlzaXRhYmlsaXR5KSkgKw0KICBjb29yZF9tYXAoKSArDQogIHRoZW1lX3ZvaWQoKSArDQogbGFicyh0aXRsZSA9ICJDYXRhbmlhIFJlZ2lvbiIpICsNCiBzY2FsZV9jb2xvcl9tYW51YWwodmFsdWVzID0gY29sb3JSYW1wUGFsZXR0ZShjKCJkYXJrZ3JlZW4iLCAicmVkIikpKDUpKSANCmBgYA0KDQpgYGB7cn0NCmdncGxvdGx5KGNhdGFuaWFfbWFwKQ0KYGBgDQoNCmBgYHtyfQ0KYWlfc2hhcGUgPC0gc3RfcmVhZCgiQzovVXNlcnMvbmR5ZXQvR2l0L01pc2MvSXRhbHlfbWFwcy9DYXRhbmlhX1F1YXJ0aWVyaV9JbmNvbWVDcmltZV9QT0xZL0NhdGFuaWFfUXVhcnRpZXJpX0luY29tZUNyaW1lX1BPTFkuc2hwIikNCmBgYA0KYGBge3J9DQphaV9tYXAgPC0gZ2dwbG90KCkgKw0KICBnZW9tX3BvbHlnb24oZGF0YSA9IGNhdGFuaWEsIGFlcyh4ID0gbG9uZywgeSA9IGxhdCwgZ3JvdXAgPSBncm91cCksIGZpbGwgPSAid2hpdGUiLCBjb2xvciA9ICJsaWdodGdyZXkiKSArDQogIGdlb21fc2YoZGF0YSA9IGFpX3NoYXBlLCBhZXMoZmlsbCA9IGNyaW1lX3RpZXIsIGdyb3VwID0gbXVuaWNpcGlvKSwgY29sb3IgPSAiZ3JleSIpICsgIyBDb3VudGllcw0KICMgZ2VvbV9zZihkYXRhID0gc2ZfemlwX3JlZHVjZV9wb2wsIGZpbGwgPSAnbGlnaHRibHVlJywgY29sb3IgPSAnbGlnaHRibHVlJykgKyNTdXJ2ZXllZCB6aXAgY29kZXMNCiAjIGdlb21fc2YoZGF0YSA9IHN0YXRlc19wb2wsIGZpbGwgPSBOQSwgY29sb3IgPSAiYmxhY2siLCBsaW5ld2lkdGggPSAxKSArICMgU3RhdGUgTGluZXMNCiMgIGxhYnModGl0bGUgPSAiMjAyMiBSQlNBIEVuY2FjaG1lbnQgQXJlYSIsIA0KICMgICAgICBjYXB0aW9uID0gIlNvdXJjZTogMjAyMCBVUyBDZW5zdXMgJiAyMDIyIFJCU0Egc3VydmV5IikgKw0KICB0aGVtZV92b2lkKCkgDQpgYGANCg0KYGBge3J9DQpnZ3Bsb3RseShhaV9tYXApDQpgYGANCg0KYGBge3J9DQphaV9zaGFwZTIgPC0gc3RfcmVhZCgiQzovVXNlcnMvbmR5ZXQvR2l0L01pc2MvSXRhbHlfbWFwcy9TaWNpbHkyMDI2X1BPTFlHT05TL1NpY2lseTIwMjZfUE9MWUdPTlMuc2hwIikNCg0KYGBgDQpgYGB7cn0NCmFpX21hcDIgPC0gZ2dwbG90KCkgKw0KICBnZW9tX3BvbHlnb24oZGF0YSA9IGNhdGFuaWEsIGFlcyh4ID0gbG9uZywgeSA9IGxhdCwgZ3JvdXAgPSBncm91cCksIGZpbGwgPSAid2hpdGUiLCBjb2xvciA9ICJsaWdodGdyZXkiKSArDQogIyBnZW9tX3NmKGRhdGEgPSBhaV9zaGFwZTIsIGFlcyhmaWxsID0gY3JpbWVfaWR4LCBncm91cCA9IG11bmljaXBpbyksIGNvbG9yID0gImdyZXkiKSArICMgQ291bnRpZXMNCiAgZ2VvbV9zZihkYXRhID0gYWlfc2hhcGUyLCBhZXMoZmlsbCA9IGFzLmZhY3RvcihuaWdodF9pZHgpLCBncm91cCA9IGNyaW1lX2lkeCksIGNvbG9yID0gImdyZXkiKSArICMgQ291bnRpZXMNCg0KICMgZ2VvbV9zZihkYXRhID0gc2ZfemlwX3JlZHVjZV9wb2wsIGZpbGwgPSAnbGlnaHRibHVlJywgY29sb3IgPSAnbGlnaHRibHVlJykgKyNTdXJ2ZXllZCB6aXAgY29kZXMNCiAjIGdlb21fc2YoZGF0YSA9IHN0YXRlc19wb2wsIGZpbGwgPSBOQSwgY29sb3IgPSAiYmxhY2siLCBsaW5ld2lkdGggPSAxKSArICMgU3RhdGUgTGluZXMNCiMgIGxhYnModGl0bGUgPSAiMjAyMiBSQlNBIEVuY2FjaG1lbnQgQXJlYSIsIA0KICMgICAgICBjYXB0aW9uID0gIlNvdXJjZTogMjAyMCBVUyBDZW5zdXMgJiAyMDIyIFJCU0Egc3VydmV5IikgKw0KICB0aGVtZV92b2lkKCkgDQpgYGANCg0KYGBge3J9DQpnZ3Bsb3RseShhaV9tYXAyKQ0KYGBgDQoNCg==